package io;

import java.io.File;
import java.io.FileOutputStream;

/**
        * JAVA IO
        * java io可以让我们用标准的读写操作来完成对不同设备的读写数据工作.
        * java将IO按照方向划分为输入与输出,参照点是我们写的程序.
        * 输入:用来读取数据的,是从外界到程序的方向,用于获取数据.
        * 输出:用来写出数据的,是从程序到外界的方向,用于发送数据.
        * java将IO比喻为"流",即:stream. 就像生活中的"电流","水流"一样,它是以同一个方向顺序
        * 移动的过程.只不过这里流动的是字节(2进制数据).
        * 所以在IO中有输入流和输出流之分,我们理解他们是连接程序与另一端的"管道",用于获取或发送
        * 数据到另一端.
        *
        * Java定义了两个超类(抽象类):
        * java.io.InputStream:所有字节输入流的超类,其中定义了读取数据的方法.因此将来不管读取
        * 的是什么设备(连接该设备的流)都有这些读取的方法,因此我们可以用相同的方法读取不同设备中
        * 的数据
        * java.io.OutputStream:所有字节输出流的超类,其中定义了写出数据的方法.
        *
        * 文件流
        * 文件流是一对低级流,用于连接程序与文件(硬盘)的"管道".负责读写文件数据.
        * java.io.FileOutputStream和java.io.FileInputStream
        *
 * JAVA IO
 * IO:Input和Output 即：输入与输出
 * Java将读写操作按照方向化分为输入与输出流
 *  输入:从外界到程序的方向，用来读取外界数据的,用于获取数据.
 *   输出:程序到外界的方向，用来写出数据到外界的,用于发送数据.
 *  Java将用于读取和写出的类比喻为“流”,即：Stream；
 *  流信息的比喻了读写数据的兴衰，像对流\电流一样，向同一侧顺序移动的过程，只不过
 *  java中的流，流动的是字节byte（2进制数据）
 *  我们可以理解为java中的流是连接程序与另一端的“管道”，通过管道相互传送数据
 *
 *  java.io.InputStream和OutputStream是所有字节输入流的超类
 *  java.io.InputStream定义了所有字节输入流中读取字节的方法。
 *  java.io.OutputStream定义了所以字节输出流中写出字节的方法。
 *
 *  java将流划分为两类：节点流和处理流
 *  节点流：也称为低级流，是真是连接程序与另一端的管道，负责实际搬运数据的流，读写
 *          数据一定是简历在节点流基础上进行的
 *   处理流：也称为高级流，不能独立存在，必须连接在其他流上，目的是当数据流经过当前流
 *          时，对其进行加工，简化我们的操作。
 *   实际开发中我们总是串联一组高级流到低级流上，读写数据以流水线式的加工来完成，
 *     这种操作也被被称为流的连接，也是学习IO的精髓所在。
 *
 *     文件流，是一对节点流（低级流），用于连接程序与文件，进行文件数据的读写操作。
 *     java.io.FileInputStream和FileOutputStream.
        */

public class FASDemo {
    public static void main(String[] args)  throws Exception{
        //向文件中写入一个字节。
//        File flie=new File("ttex.txt");
//        FileOutputStream out=new FileOutputStream(flie);
        //常见构造器，文件流创建时若指定的文件不存在会自动将其创建出来
        //     FileOutputStream(File file)
        //      FileOutputStream(String path)
        //       以上两种方式创建的文件流是覆盖模式,即:在创建文件流时若指定的文件已经存在
        //        则会将该文件原有的内容抹除.之后通过当前流写出的内容都会保留在文件中.
        FileOutputStream out=new FileOutputStream("./ttex.txt");
        System.out.println("创建完毕");
        /*
         void write(int 0);
         向文件写入一个字节，写入的是给定的int型对应的2进制的“低八位”
         */
        /*
          out.write(1);
          int 1型的2进制：
                                      vvvvvvvvv
           00000000 00000000 00000000 00000001
           执行后ttex.txt文件中的数据为
           00000001
         */
        out.write(5);
        out.write(4);
        System.out.println();
        out.close();

    }
}
